package com.bjsxt.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * description:
 * OAuth2 远程调用 authorization-server 的方法 openfeign
 *
 * @author ALIENWARE <br />
 * @date 2021/6/25
 */
@FeignClient("authorization-server")
public interface OAuth2FeignClient {
    /**
     * 获取用户 token 数据
     *
     * @param grantType  授权类型
     * @param userName   用户名
     * @param password   密码
     * @param loginType  登录的类型
     * @param basicToken Basic Y29pbi1hcGk6Y29pbi1zZWNyZXQ= 由第三方客户端(postman)信息加密出现的值
     * @return token 数据对象
     */
    @PostMapping("/oauth/token")
    ResponseEntity<JwtToken> getToken(
            @RequestParam("grant_type") String grantType, // 授权类型
            @RequestParam("username") String userName, // 用户名
            @RequestParam("password") String password, // 密码
            @RequestParam("login_type") String loginType, // 登录的类型
            @RequestHeader("Authorization") String basicToken  // 这个值就是客户端 id 和客户端密码进行加密的值
    );
}
